const express = require("express");
const moment = require("moment");
const {cors} = require("./middleware");
const contextListC = require("./Db/collections/contextList");

const app = express();
app.use(express.json());// 将格式为application/json的请求体数据放置到req.body中
app.use(cors());
// 添加微博
app.post("/weibo", async (req, res) => {
	/*思路：伪代码
	* 1- 接收数据 context
	* 2- 在数据库中判断是否拥有相同的微博内容
	*    2-1：存在：给予响应-您提交的数据已经存在，请不要重复提交！
	*    2-2：不存在：
	* 		2-2-1：整理往数据库中添加的数据
	* 		2-2-2：往数据库中添加，并给予响应
	* */
	try {
		const {context} = req.body;
		// 获取与接收的微博内容相同的文档条数
		const count = await contextListC.count({context});
		if (count === 0) {
			// 文档不存在
			await contextListC.insertOne({
				context,// 微博内容
				addTime: moment().format("YYYY-MM-DD HH:mm:ss")
			});
			res.json({
				ok: 1,
				msg: "添加成功"
			})
		} else {
			// 存在
			res.json({
				ok: -1,
				msg: "您提交的数据已经存在，请不要重复提交！"
			})
		}
	} catch (err) {
		res.json({
			ok: -1,
			msg: "异常:" + err.message
		})
	}
});
// 获取微博
app.get("/weibo", async (req, res) => {
	try {
		console.log(1111111)
		/*
		* 思路：
		* 1- 接收数据
		* 2- 数据库获取数据
		* 3- 响应结果*/
		let {pageNo = 1, pageSize = 3} = req.query;
		pageNo = pageNo / 1;
		pageSize = pageSize / 1;
		if (pageNo < 1) pageNo = 1;
		// 总条数
		const count = await contextListC.count();
		// 总页码
		let pageSum = Math.ceil(count / pageSize);
		if (pageSum < 1) pageSum = 1;
		if (pageNo > pageSum) pageNo = pageSum;
		// 获取微博列表
		const contextList = await contextListC.find({
			sortObj: {
				addTime: -1
			},
			skip: (pageNo - 1) * pageSize,
			limit: pageSize
		});
		res.json({
			ok: 1,
			msg: "获取成功",
			contextList,
			pageSum,
			pageNo
		})
	} catch (err) {
		console.log(err);
		res.json({
			ok: -1,
			msg: "异常:" + err.message
		})
	}
});
// 根据ID删除微博
app.delete("/weibo/:id", async (req, res) => {
	/*
	* 思路：
	* 1- 接收id
	* 2- 根据ID去数据库中删除
	* 3- 给予前端响应*/
	try {
		const {id} = req.params;
		await contextListC.deleteOneById(id);
		res.json({
			ok: 1,
			msg: "删除成功！"
		})
	} catch (err) {
		res.json({
			ok: -1,
			msg: "异常：" + err.message
		})
	}
})
// 根据ID修改微博
app.put("/weibo/:id/:type", async (req, res) => {
	try {
		const {id, type} = req.params;
		await contextListC.updateOneById(id,{
			$inc:{
				[type/1===1?"topNum":"downNum"]:1
			}
		});
		res.json({
			ok:1,
			msg:"更新成功"
		})

	} catch (err) {
		res.json({
			ok: -1,
			msg: "异常：" + err.message
		})
	}


})
app.listen(80, () => {
	console.log("success");
})